# __07__fastapi_serve_predict.py
from flask import Flask, render_template, request, jsonify
import sys
import os
import time
# 导入现有的预测函数模块
import __06__ft_predict as predictor

# 添加项目路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))


app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')  # 改为 index.html

@app.route('/predict', methods=['POST'])
def predict_endpoint():
    try:
        # 获取请求数据
        data = request.get_json()
        text = data.get('text', '')

        if not text:
            return jsonify({'error': '请输入文本内容'}), 400

        # 构造输入数据格式
        input_data = {'text': text}

        # 记录开始时间
        start_time = time.time()

        # 调用现有的 predict_fun 函数
        predictor.predict_fun(input_data)

        # 计算响应时间
        response_time = round((time.time() - start_time) * 1000, 2)

        # 从 input_data 中获取预测结果
        result = {
            'text': text,
            'pred_class': input_data.get('pred_class', ''),
            'response_time': response_time
        }

        return jsonify(result)

    except Exception as e:
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8001, debug=True)
